package com.tianjin.design.state;

/**
 *
 * @author tianjin
 *
 * 2023年6月2日
 * TODO 状态模式# 行为型模式
 *
 * 1、官方定义：当一个对象的内在状态改变时允许改变其行为，这个对象看起来像是改变了其类
 * 2、适用场景：当控制一个对象状态转换的条件表达式过于复杂时，可以把判断状态的逻辑转移到表示不同状态的一系列类中。
 * 3、使用思路：状态模式的思想是将特定状态相关的行为都放到一个对象中，在运行时根据状态判断使用哪个对象，这样方便状态的扩展和转换
 * 			我自己觉得实现思路在于如何将各个状态对应动作封装到各自对象中，且客户端只需要进行动作就可以了，状态是自动改变的，客户端没有感知
 * 4、开发思路：
 * 		4-1 首先需要有一个状态接口定义状态处理的标准 WorkState
 * 		4-2 需要定义一个根据不同状态不同表现的上下文 WorkContext
 */
public class Test {

	public static void main(String[] args) {

		WorkContext context = new WorkContext();
		context.setThing(1);
		context.work();

		context.setThing(2);
		context.work();

	}
}
